﻿namespace Jim.K3Cloud;


public interface IK3CloudLoginRequest : ISdkRequest<K3CloudLoginResponse> { }

public interface IK3CloudSSORequest
{
    /// <summary>
    /// Url类型   HTML:浏览器;WPF;客户端;SilverLight;默认浏览器
    /// </summary>
    string UrlType { get; set; }
    /// <summary>
    /// 登录用户名
    /// </summary>
    string UserName { get; set; }
    /// <summary>
    /// XT=云之家集成（同时要求entryrole=XT）；SimPas=简单通行证集成;
    /// </summary>
    [JsonProperty("origintype")]
    string OriginType { get; set; }
    /// <summary>
    /// 验证权限的入口角色;
    /// </summary>
    [JsonProperty("entryrole")]
    string EntryRole { get; set; }
    /// <summary>
    /// 登录后默认打开功能的表单id
    /// </summary>
    [JsonProperty("formid")]
    string FormId { get; set; }
    /// <summary>
    /// 单据：bill或空, 列表：list, 万能报表：wnreport, 直接sql报表：sqlreport, 系统报表：sysreport， 树形报表：treereport, 移动报表：movereport， 动态表单：dynamicform。
    /// </summary>
    [JsonProperty("formtype")]
    string FormType { get; set; }
    /// <summary>
    /// formid对应表单的主键；formtype为list时忽略，formtype为bill时起作用，如果为空表示新增状态
    /// </summary>
    [JsonProperty("pkid")]
    string PkId { get; set; }
    /// <summary>
    /// 作为用户自定义参数传入，使用于二开
    /// </summary>
    [JsonProperty("otherargs")]
    string OtherArgs { get; set; }
    /// <summary>
    /// 允许登录次数，0 允许重复登录 ，1 只允许登录一次
    /// </summary>
    [JsonProperty("permitcount")]
    int PermitCount { get; set; }

    /// <summary>
    /// 表单初始化自定义参数formargs，能设置boside中发布的自定义参数。仅V2版本协议支持该参数，V1版本不支持。 
    /// formargs为json格式字符串，例如人人报销首页参数：{ "KD_Html5_FormTheme_Name": "Galaxy" } 。
    /// PT-146869 [7.6.0.202103] 2021/3/25  7.6.2122.7 ）
    /// </summary>
    [JsonProperty("formargs")]
    string FormArgs { get; set; }

    /// <summary>
    /// 登陆后打开指定功能单据的模式，空白=原有主控模式，
    /// Single=单独打开指定单据（没有主控功能，仅HTML5端支持，需要配合轻量级入口地址：【http://xxx.xxx.xxx.xxx/k3cloud/html5/lightstartapp.aspx?ud=...】）
    /// 2019-03-13补丁 PT132327  [7.3.1199.6]）；
    /// </summary>
    [JsonProperty("openmode")]
    string OpenMode { get; set; }
}
    
public interface IK3CloudSSORequest<T> : IK3CloudSSORequest,ISdkRequest<T> where T:ISdkResponse { }

public interface IK3CloudViewRequest
{
    /// <summary>
    /// 创建者组织内码（非必录）
    /// </summary>
    int CreateOrgId { get; set; }
    /// <summary>
    /// 单据编码，字符串类型（使用编码时必录）
    /// </summary>
    string Number { get; set; }
    /// <summary>
    /// 表单内码（使用内码时必录）
    /// </summary>
    string Id { get; set; }
    /// <summary>
    /// 单据体是否按序号排序，默认false
    /// </summary>
     bool IsSortBySeq { get; set; }
}

public interface IK3CloudViewRequest<T> : IK3CloudViewRequest, ISdkRequest<T>,IK3CloudCustomRequest where T : ISdkResponse { }

public interface IK3CloudQueryRequest
{
    /// <summary>
    /// 需查询的字段key集合，字符串类型，格式："key1,key2,..."（必录） 注（查询单据体内码,需加单据体Key和下划线,如：FEntryKey_FEntryId）
    /// </summary>
    string FieldKeys { get; set; }
    /// <summary>
    /// 过滤条件，数组类型，如：[{"Left":"(","FieldName":"Field1","Compare":"=","Value":"111","Right":")","Logic":"AND"},{"Left":"(","FieldName":"Field2","Compare":"=","Value":"222","Right":")","Logic":""}]
    /// </summary>
    string FilterString { get; set; }
    /// <summary>
    /// 排序字段，字符串类型（非必录）
    /// </summary>
    string OrderString { get; set; }
    /// <summary>
    /// 返回总行数，整型（非必录）
    /// </summary>
    int TopRowCount { get; set; }
    /// <summary>
    /// 开始行索引，整型（非必录）
    /// </summary>
    int StartRow { get; set; }
    /// <summary>
    /// 最大行数，整型，不能超过10000（非必录）
    /// </summary>
    int Limit { get; set; }
    /// <summary>
    /// 表单所在的子系统内码，字符串类型（非必录）
    /// </summary>
    string SubSystemId { get; set; }
}

public interface IK3CloudQueryRequest<T> : IK3CloudQueryRequest, ISdkRequest<T>, IK3CloudCustomRequest where T : ISdkResponse { }

public interface IK3CloudCustomRequest
{
    object QueryParams();
}